The subject matter disclosed herein relates generally to imaging systems and methods and, more particularly, to systems and methods for performing inverted beamforming in ultrasonic imaging systems.
Medical diagnostic ultrasound is an imaging modality that employs ultrasound waves to probe the acoustic properties of the body of a patient and produce a corresponding image. Generation of sound wave pulses and detection of returning echoes is typically accomplished via a plurality of transducers located in the probe. Such transducers typically include electromechanical elements capable of converting electrical energy into mechanical energy for transmission and mechanical energy back into electrical energy for receiving purposes. Some ultrasound probes include up to thousands of transducers arranged as linear arrays or a two-dimensional matrix of elements.
A beamformer is typically associated with the ultrasound probe to combine the signals from each transducer element so as to enhance the response to received acoustic energy from a desired focus depth and direction. In certain ultrasound systems, both the inputs and output of the beamformer, the element signals, and the beamsum signal, are sampled uniformly in time. In certain systems, the beamformer focus function is implemented by calculating for each beamsum sample a corresponding time in each element signal that accounts for the propagation time for acoustic energy emitted from the transducer, reflected from scatterers at the desired focus point and returning to that element. In general, this propagation time used in the focus function will not correspond to one of uniformly spaced element samples that are available. In some traditional beamformers, the value at the focus time is obtained by interpolating the available uniformly spaced element samples to approximate the value that would have been obtained had the element signal been sampled at the focus time.
This interpolation can be performed in dedicated hardware, such as a custom application-specific integrated circuit (ASIC), or in a computer processor, such as a general purpose processor (CPU, or central processing unit) or a graphical processing unit (GPU). The first implementation may be called a hardware beamformer, and the second implementation may be called a software beamformer.
In some applications, it is useful to calculate more than one beamsum signal from the same set of element signals, i.e., from the data acquired during a single transmit event. This increases the maximum image display rate by reducing the number of transmit firings required to form an image over a desired two-dimensional scan area or three-dimensional volume. In a hardware beamformer, the element signal samples are typically processed sequentially as they are produced and then discarded. Forming multiple beamsums typically requires duplicating the interpolation hardware for each beamsum. This tends to be costly in terms of both power and expense, especially in volumetric imaging when many (e.g., approximately 16-64) receive beams are desired for each transmit event.
In a software beamformer, the element signal samples for one or more transmit firings are typically stored in memory temporarily, and the interpolation software accesses the required samples from the memory. In a software beamformer, the number of receive beams that can be calculated is limited primarily by the speed at which the processor can perform the calculations. In many applications, the software beamformer has significant advantages in power consumption and expense compared with the hardware beamformer.
The calculation speed is determined by both the raw speed of the processor, i.e., the rate at which math operations can be performed in the processor, and by the memory bandwidth, the rate at which data can be read and written to memory from the processor. The memory bandwidth may be the limiting factor in applications, such as software beamforming, in which only a small number of math operations needs to be performed on each of a very large number of samples. This is especially true when the memory in a specific application cannot be addressed sequentially, since the interface between processor and memory is typically highly optimized for sequential memory access. Unfortunately, conventional approaches to calculating multiple beamsums in a software beamformer require repeated, non-sequential access to data stored in memory, thus limiting the system efficiency.